Verification of Mutual Recursive Functional Programs
نویسندگان
چکیده
We present an environment for proving total correctness of mutual recursive functional programs. As usual, correctness is transformed into a set of first-order predicate logic formulae—verification conditions. As a distinctive feature of our method, these formulae are not only sufficient, but also necessary for the correctness. A specialized strategy for proving termination is developed. The detailed termination proofs may in many cases be avoided due to their reusability.
منابع مشابه
Towards Manipulation of Mutually Recursive Functions
In functional programming, Constructive Algorithmics is one of the promising approaches to program transformation, especially to fusion, in which a concept called hylomorphism plays quite an important role. However, previous studies have mainly focused on programs constructed by single recursive functions, whereas programs constructed by mutual recursion have been little investigated, particula...
متن کاملA Practical Approach to Verification of Recursive Programs in Theorema extended abstract
We report work in progress concerning the theoretical basis and the implementation in the Theorema system of a methodology for the generation of verification conditions for recursive procedures, with the aim of practical verification of recursive programs. Proving total correctness is achieved by proving separately partial correctness and then termination. We develop a pattern for proving parti...
متن کاملVerifying Safety of Functional Programs with Rosette/Unbound
The goal of unbounded program verification is to discover an inductive invariant that safely over-approximates all possible program behaviors. Functional languages featuring higher order and recursive functions become more popular due to the domain-specific needs of big data analytics, web, and security. We present Rosette/Unbound, the first program verifier for Racket exploiting the automated ...
متن کاملExperimental Program Verification in the Theorema System
We describe practical experiments of program verification in the frame of the Theorema system. This includes both imperative programs (using Hoare logic), as well as functional programs (using fixpoint theory). For a certain class of imperative programs we are able to generate automatically the loop invariants and then verification conditions, by using combinatorial and algebraic techniques. Ve...
متن کاملA Prototype Environment for Verification of Recursive Functional Programs
We present an experimental prototype environment for defining and verifying recursive functional programs, which is part of the Theorema system. A distinctive feature of our approach is the hint on ”what is wrong” in case of a verification failure. The prototype is designed in order to improve the education of future software engineers by exposing them to successful examples of using formal met...
متن کامل